/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ictius.estructuras;

import ictius.excepciones.ColaExceptions;
import ictius.excepciones.DesencolarException;

/**
 * Se separa el 'qué' del 'cómo'. Esta interfaz determina los métodos fundamentales de cualquier cola.
 * @author Tadeo
 */
public interface Cola {
    /**
     * Inserta un elemento en la cola.
     * @param x 
     */
    void insertar(Object x);
    /**
     * Regresa el primer elemento de la cola.
     * @return (Objecto)
     * @throws ColaExceptions 
     */
    Object primero() throws ColaExceptions;
    /**
     * Eimina y regresa el primer elemento de la cola.
     * @return (Objeto)
     * @throws ColaExceptions 
     */
    Object quitarPrimer() throws DesencolarException;
    /**
     * Pregunta si la cola está vacía.
     * @return (valor lógico)
     */
    boolean esVacia();
    /**
     * Elimina todos los elementos de la cola.
     */
    void vaciar();
}
